本发明公开了一种报文处理装置,应用于服务器中,该装置包括:预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。本发明同时公开了一种报文处理方法和预处理器,应用本发明所述的报文处理装置和报文处理方法、及预处理器,通过由预处理设备对报文进行预处理,使得多个低功耗的处理器可以并行应用到服务器中,降低了服务器的功耗。
1.一种报文处理装置,其特征在于,应用于服务器中,该装置包括:预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个低功耗处理器中;每一个所述低功耗处理器,用于接收并处理由所述预处理器发送的报文。
2.根据权利要求1所述的装置,其特征在于,所述预处理器,还用于当所述接收到的报文所属的流存在相关流时,将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的低功耗处理器相同的低功耗处理器中。
3.根据权利要求1所述的装置,其特征在于,所述预处理器包括:报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给获取到的所述处理器标识所对应的低功耗处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的低功耗处理器对应的处理器标识。
4.根据权利要求3所述的装置,其特征在于,所述预处理器还包括:报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。
5.根据权利要求4所述的装置,其特征在于,所述预处理器还包括:处理器监控模块,其中,所述处理器监控模块,用于获取每一个低功耗处理器的信息,所述低功耗处理器的信息至少包括处理器标识、低功耗处理器是否正常工作和低功耗处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取低功耗处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。
6.根据权利要求5所述的装置,其特征在于,所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的低功耗处理器对应的处理器标识。
7.根据权利要求5所述的装置,其特征在于,所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。
8.一种报文处理方法,其特征在于,应用于包括预处理器和两个以上的低功耗处理器的服务器中,其中,所述预处理器通过高速互连接口与两个以上的所述低功耗处理器并行相连,该方法包括:预处理器判断接收到的外部输入的报文是否是分片的报文,如果是,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息后,根据报文的五元组信息确定处理所述报文的低功耗处理器,将所述报文分配到所述确定的低功耗处理器中;否则,直接根据报文的五元组信息确定处理所述报文的低功耗处理器,将所述报文分配到所述确定的低功耗处理器中。
9.根据权利要求8所述的方法,其特征在于,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息包括:根据所述分片的报文的报文头标识信息判断所述分片的报文为首片还是后续分片,当所述分片的报文为报文的首片时,记录首片的五元组信息和因特网协议的身份标识IPID信息;当所述分片的报文为报文的后续分片时,根据所述后续分片的五元组信息中的源因特网协议SIP、目的因特网协议DIP、协议号PROTOCAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的源端口号SPORT和目的端口号DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询对应的五元组信息,获取所述首片的五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息。
10.根据权利要求9所述的方法,其特征在于,所述根据报文的五元组信息确定处理所述报文的低功耗处理器包括:判断是否存在与该报文的五元组信息对应的流表表项,如果有,则将流表表项中的处理器标识所对应的低功耗处理器作为确定处理所述报文的低功耗处理器;否则,选择一个低功耗处理器,根据将所述选择的低功耗处理器和报文的五元组信息创建流表表项,并将所述选择的所述低功耗处理器作为确定处理所述报文的低功耗处理器。
11.根据权利要求10所述的方法,其特征在于,所述选择的低功耗处理器为低功耗处理器中当前负载能力最大的低功耗处理器。
12.根据权利要求10所述的方法,其特征在于,接收到所述报文后,该方法还包括:判断所述报文所属的流是否存在相关流,如果是,则选择一个低功耗处理器,并根据所述选择的低功耗处理器和流的五元组信息创建流表表项,并将所述选择的低功耗处理器作为确定处理所述流的低功耗处理器。
13.根据权利要求12所述的方法,其特征在于,按照处理器标识相同选择处理所述流的低功耗处理器和处理所述报文的低功耗处理器。
14.根据权利要求10或12所述的方法,其特征在于,所述选择低功耗处理器后,该方法还包括:更新所述低功耗处理器的当前负载能力信息。
15.一种预处理器,其特征在于,应用于服务器中,其中,所述预处理器通过高速互连接口与两个以上的低功耗处理器并行相连;该预处理器包括:报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给获取到的所述处理器标识所对应的低功耗处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的低功耗处理器对应的处理器标识。
16.根据权利要求15所述的预处理器,其特征在于,所述预处理器还包括:报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。
17.根据权利要求16所述的预处理器,其特征在于,所述预处理器还包括:处理器监控模块,其中,所述处理器监控模块,用于获取每一个低功耗处理器的信息,所述低功耗处理器的信息至少包括处理器标识、低功耗处理器是否正常工作和低功耗处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取低功耗处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。
18.根据权利要求16所述的预处理器,其特征在于,所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的低功耗处理器对应的处理器标识。
19.根据权利要求16所述的预处理器,其特征在于,所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。
技术领域本发明涉及报文处理技术领域,特别涉及一种报文处理装置和报文处理方法、及预处理器。
背景技术目前,服务器作为多数网络数据的源头,对服务器的整体性能要求比较高,因而服务器对应用到其中的处理器的性能要求也比较高,从而现有服务器多采用高性能的处理器并行工作的方式,而高性能的处理器功耗也比较高,从而使得服务器的性能功耗比会比较低。现有低功耗的处理器由于性能也比较低,因此,一般只应用于消费类电子等领域,而并没有在服务器领域中的应用。
发明内容有鉴于此,本发明提供了一种报文处理装置,在保持服务器高性能的同时,不仅能够降低服务器的功耗,而且还简化了处理器的处理流程。本发明还提供了一种报文处理方法和一种预处理器,不仅能够降低服务器的功耗,而且还简化了处理器的处理流程。为了达到上述目的,本发明提出的技术方案为:一种报文处理装置,应用于服务器中,该装置包括:预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。所述预处理器,还用于当所述接收到的报文所属的流存在相关流时,将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的处理器相同的处理器中。所述预处理器包括:报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。所述预处理器还包括:报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。所述预处理器还包括:处理器监控模块,其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。一种报文处理方法,应用于包括预处理器和两个以上的低功耗处理器的服务器中,该方法包括:预处理器判断接收到的外部输入的报文是否是分片的报文,如果是,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息后,根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中;否则,直接根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中。对所述分片的报文进行处理,得到分片的报文的完整的五元组信息包括:根据所述分片的报文的报文头标识信息判断出为所述分片的报文为首片还是后续分片,当所述分片的报文为报文的首片时,记录首片的五元组信息和因特网协议的身份标识IPID信息;当所述分片的报文为报文的后续分片时,根据所述后续分片的五元组信息中的源因特网协议SIP、目的因特网协议DIP、协议号PROTOCAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的源端口号SPORT和目的端口号DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询对应的五元组信息,获取所述首片的五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息。所述根据报文的五元组信息确定处理所述报文的处理器包括:判断是否存在与该报文的五元组信息对应的流表表项,如果有,则将流表表项中的处理器标识所对应的处理器作为确定处理所述报文的处理器;否则,选择一个处理器,根据将所述选择的处理器和报文的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述报文的处理器。所述选择的处理器为处理器中当前负载能力最大的处理器。所述接收到报文后,该方法还包括:判断所述报文所属的流是否存在相关流,如果是,则选择一个处理器,并根据所述选择的处理器和流的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述流的处理器。按照处理器标识相同选择处理所述流的处理器和处理所述报文的处理器。所述选择处理器后,该方法还包括:更新所述处理器的当前负载能力信息。一种预处理器,应用于服务器中,该预处理器包括:报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。所述预处理器还包括:报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。所述预处理器还包括:处理器监控模块,其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。综上所述,本发明所采用的报文处理装置,是通过将预处理器和多个并行的低功耗处理器组合起来应用到服务器中,预处理器将来自外部的报文预先进行分流,分别分配给各个低功耗处理器,并且将同一个流的报文分配给同一个处理器进行处理。这样,一方面,多个低功耗处理器能够并行处理预处理器分配给自身的报文,从整体上可以达到比较高的性能;另一方面,由于应用到服务器中并行的处理器是低功耗的处理器,从而在整体上可以降低服务器的功耗。同时,本发明方案通过预处理器的预先分流使得属于同一个流的报文都能够由一个处理器来处理,而不会出现由不同的处理器来处理,则同一个流的报文还需要在处理器间转发的问题,也就简化了处理器的处理流程。进一步地,本发明方案通过对各个处理器的状态信息进行监控,从而能够在各个处理器之间进行协调运行,减少相互之间的干扰,使得系统运行更加稳定。
附图说明图1为本发明所采用的报文处理装置的组成结构示意图;图2为本发明所采用的预处理器的组成结构示意图;图3为本发明报文处理方法实施例的工作流程图。
具体实施方式为了解决现有技术中存在的问题,本发明提出了一种新的报文处理装置,即通过将预处理器和多个并行的低功耗处理器组合起来应用到服务器中。预处理器将来自外部的报文预先进行分流,分别分配给各个低功耗处理器,并且将同一个流的报文分配给同一个处理器进行处理。这样,一方面,多个低功耗处理器能够并行处理预处理器分配给自身的报文,从整体上可以达到比较高的性能;另一方面,由于应用到服务器中并行的处理器是低功耗的处理器,从而在整体上可以降低服务器的功耗。基于上述介绍,本发明所述方案的具体实现包括:预处理器通过高速互连接口与多个低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。图1为本发明所采用的报文处理装置的组成结构示意图。如图1所示,该装置包括:预处理器11和两个以上的低功耗的处理器12。其中,预处理器11通过高速互连接口与两个以上的低功耗处理器12并行相连,用于接收外部接口输入的报文,将接收到的报文预先进行分流,并将分流后的报文分配给处理器12,且将属于同一个流的所有报文都发送到同一个处理器12中;所述每一个处理器12,用于对由预处理器11发送过来的报文进行处理,且所述处理器12的个数以实际应用为准。进一步地,所述预处理器11,还用于当所述接收到的报文所属的流存在相关流时,将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的处理器12相同的处理器12中。例如:在本发明中,将Altera公司的EP2AGX125作为预处理器11,10颗1.5Ghz主频的四核心的Marvellxa0MV78460作为处理器12,则将它们按照如图1所述的组合应用到服务器中,总功耗大约也只有82瓦。但如果采用目前典型的处理器,比如六核心的2.266Ghz的Intelxa0XeonE6540,不仅性能上不如本发明所采用的报文处理装置,且单颗处理器的典型功耗就能够达到105瓦。从而将本发明报文处理装置应用到服务器中,在保持了服务器高性能的同时,还能够大大降低服务器的功耗。在本实施例中,预处理器11可采用图2所示的组成结构,如图2所示,该预处理器11可包括:报文接收模块21、报文处理模块22、流分类模块23和流表维护模块24,其中,所述报文接收模块21,用于接收外部接口输入的报文,并将所述接收到的分片的报文发送给报文处理模块22、将所述接收到的不分片的报文发送给流分类模块23。在实际应用中,服务器接收到的由外部接口输入的报文不但量大,而且种类繁多,从报文格式的完整性来看,可以有分片的报文和不分片的报文两种,这些报文可以属于同一个流,也可以属于不同的流,且不同的流之间可能是相关的,也可能是不相关的,在本实施例中,可将报文作为流的最小单位来处理。由于不分片的报文的五元组信息是完整的,而分片的报文的首片和后续分片格式略有不同,即首片的五元组信息是完整的,而后续分片的五元组信息是不完整的,因此,需要对分片的报文进行处理。需要说明的是,完整的报文的五元组信息包括源因特网协议(SIP)、目的因特网协议(DIP)、协议号(PROTOCAL)、源端口号(SPORT)和目的端口号(DPORT),其中,分片的报文的后续分片仅仅包含了五元组信息中的SIP、DIP和PROTOCAL这三个信息,并不包含SPORT和DPORT这两个信息。所述报文处理模块22,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识(IPID)信息,并将所述首片发送给流分类模块23;当所述分片的报文为报文的后续分片时,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,并将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块23,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询对应的五元组信息,获取所述五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给流分类模块23。所述流分类模块23,用于将由报文接收模块21发送的报文的五元组信息和报文处理模块22发送的报文的五元组信息发送给流表维护模块24,接收流表维护模块24发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器。所述流表维护模块24,用于接收流分类模块23发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块23;如果没有,则根据流分类模块23发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。进一步地,该预处理器11还可包括报文解析模块25,则,所述报文接收模块21,还用于将所述接收到的不分片的报文发送给报文解析模块25。所述报文处理模块22,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块25;当所述分片的报文为报文的后续分片时,且当获取到后续分片的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块25,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块25。所述报文解析模块25,用于对由报文接收模块21发送的报文和报文处理22模块发送的所述接收到的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块24发送五元组信息指示流表维护模块24创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。在本实施例中,假设至少存在流1和流2两条流,则确定所述报文所属的流存在相关流的情况可以有以下几种:1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前,解析出接收到的流2的报文中存在流1的五元组信息,此时,即可确定流2存在相关的流,即为流1。比如:解析出FTP控制连接的PORT报文中存在数据连接的五元组信息,则数据连接必然是控制连接的相关流。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,此时,如果预先设定SIP地址相同的流为相关流,当解析出流2的第一个报文的SIP与流1的相同时,即可认为流2存在相关流、即为流1。这种情况可以应用于黑客攻击服务器中,比如流1来自于某个用户,当发现该用户是黑客恶意攻击时,那么由于流1的SIP即为该用户的IP地址,为了防止黑客的恶意攻击,需要对该用户发出的所有数据都视为无效数据进行处理,即将SIP相同的所有流都视为该用户的数据流,即可认为SIP相同的所有流都是相关的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,即可确定流2存在相关的流,为流1。以上三种情况仅为举例说明,实际中还可以根据业务情况确定,总之可以从某个流的报文中解析出该报文所属的流是否存在相关流即可,以不影响本发明实施例的实现为准。需要说明的是,在本实施例中,当确定出所述报文所属的流存在相关流时,则需要报文解析模块25向流表维护模块24发送五元组信息来指示流表维护模块24创建流表表项,由于确定所述报文所属的流存在相关流的情况不同,发送的五元组信息也是不同的,具体可以对应有以下几种情况:1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前,解析出接收到的流2的报文中存在流1的五元组信息,则报文解析模块25向流表维护模块24发送的是相关流、即流1的五元组信息。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,且流2的第一个报文的SIP与流1的相同时,则报文解析模块25向流表维护模块24发送的是报文所属的流、即流2的五元组信息。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,则报文解析模块25向流表维护模块24发送的是报文所属的流或相关流中其中一个流的五元组信息。当为其它情况时,则应根据实际需要来确定发送哪个流的五元组信息,并不是严格确定的。所述流表维护模块24,进一步用于接收报文解析模块25发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。在本实施例中,创建流表表项可以为重新为流创建一个新的流表表项,也可以为修改流之前的流表表项。比如:当相关的流中的报文之前没有任何一个被处理过时,需要创建相关的流的流表表项;而修改流表表项的情况则为:假设有两个流,分别为流1和流2,流1采用处理器1进行处理,流2采用处理器2进行处理,在处理流1的时候接收到流2的报文,而对流2的报文进行解析发现流2中存在相关的流1,此时,为了使得相关的两个流能够使用同一个处理器进行处理,则需修改流1的流表表项,即将流1也采用处理器2来进行处理;或者修改流2的流表表项,即将流2也采用处理器1来进行处理。需要说明的是,由于报文解析模块25发送的五元组信息的不同,创建流表表项也可对应不同的情况,有以下几种:1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前,解析出接收到的流2的报文中存在流1的五元组信息,则由于发送的是相关流的五元组信息,此时,即可根据相关流的五元组信息为相关流创建流表表项,且流表表项中的处理器标识与流2的流表表项的处理器标识是相同的。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,且流2的第一个报文的SIP与流1的相同时,则由于发送的是流2的五元组信息,此时需要根据流2的五元组信息为流2创建流表表项,且流表表项中的处理器标识与流1的流表表项的处理器标识是相同的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,此时可有两种情况:当发送流2的五元组信息时,需要根据流2的五元组信息对应地修改流2的流表表项中的处理器标识,使其与流1的流表表项的处理器标识相同;当发送流1的五元组信息时,需要根据流1的五元组信息对应地修改流1的流表表项中的处理器标识,使其与流2的流表表项的处理器标识相同。还需说明的是,在本实施例中,所述报文的流表表项中的处理器标识与所述报文所属的流相关流的流表表项中的处理器标识也可以是不相同的,比如,当在创建流表表项时,如果该处理器的当前负载能力已经达到极限,也可通过其它的处理器来处理,在实际中,以不影响本发明实施例的实现为准。在本实施例中,处理器11还可包括处理器监控模块26,所述处理器监控模块26,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器当前负载能力。所述流表维护模块24,还用于从处理器监控模块26中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。在本实施例中,流表维护模块24从处理器监控模块26中获取的处理器标识可以为当前负载能力最大的处理器对应的处理器标识,从而使得各处理器之间实现负载均衡,具体实现时以实际应用为准。进一步地,所述流表维护模块24,还用于设置流表表项的最大使用周期,每个流表表项都对应了一个最大使用周期,且这些周期可以是相同的,也可以是不同的。当在最大使用周期内该流表表项被使用时,则重新开始计时该流表表项的使用时间;当达到最大使用周期时,将该流表表项删除。在本实施例中,所述流表表项的格式可参见表1。表1
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>至此,即得到了本实施例所采用的预处理器的组成结构。基于上述报文处理装置和预处理器,图3给出了本发明报文处理方法实施例的工作流程,如图3所示,该流程包括以下步骤:步骤301:预处理器从外部接口接收报文。在实际应用中,外部接口输入的报文不但量大,而且种类繁多,从报文格式的完整性来看,可以有分片的报文和不分片的报文两种,这些报文可以属于同一个流,也可以属于不同的流,且不同的流之间可能是相关的,也可能是不相关的。步骤302:判断该报文是否是分片的报文,如果是,执行步骤303;否则,分别执行步骤304-306和307-308。在本步骤中,不分片的报文的五元组信息是完整的,而分片的报文的首片和后续分片的格式是不同的,即首片的五元组信息是完整的,后续分片的五元组信息是不完整的,仅仅包含了五元组信息中的SIP、DIP和PROTOCAL这三个信息,并不包含SPORT和DPORT这两个信息,而处理器对报文进行处理时需要获知报文的完整的五元组信息,因此,需要对分片的报文和不分片的报文进行不同的处理。步骤303:对分片的报文进行处理,得到分片报文的完整的五元组信息后,再分别执行步骤304-306和307-308。在本步骤中,对分片的报文进行处理,得到完整的五元组信息的具体过程可以为:根据分片的报文的报文头标识信息判断出所述分片的报文为首片还是后续分片,当所述分片的报文为报文的首片时,记录首片的五元组信息和IPID信息,再分别执行步骤304-306和307-308;当所述分片的报文为报文的后续分片时,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PROTOCAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,再分别执行步骤304-307和308-309,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、PROTOCAL信息和IPID信息查询对应的五元组信息,获取所述首片的五元组信息中的SPORT和DPORT信息,将后续分片中的(SIP,DIP,PROTOCAL)信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息后,再分别执行步骤304-306和307-308。需要说明的是,在本步骤中,具体如何根据报文头标识信息判断分片的报文为首片还是后续分片已为现有技术,这里不再赘述。以下步骤304-306为对报文进行处理,即根据报文的五元组信息确定处理所述报文的处理器的过程,步骤307-308为创建与报文所属的流相关流的流表的过程,它们可以是同时进行的,也可以是交叉进行的,在时间上是没有先后顺序之分的两个不同的处理过程,下面以先执行步骤304-306,再执行步骤307-308为例说明。还需说明的是,在实际中,也可仅执行步骤304-306,而不必执行步骤307-308,这里列出的本发明的一个最佳实施例。步骤304:根据报文的五元组信息查找流表表项。在本步骤中,流表表项中至少包括报文的五元组信息及处理该报文的处理器标识,还可以包括该流表表项的最大使用周期,每个流表表项都对应了一个最大使用周期,且这些周期可以是相同的,也可以是不同的。当在最大使用周期内该流表表项被使用时,则重新开始计时该流表表项的使用时间;当超过了最大使用周期时,将该流表表项删除。需要说明的是,由于一条流中的不同报文的五元组信息都是相同的,因此,本步骤能够保证一条流的各个报文都使用同一个处理器处理,从而减少了处理器的处理流程。还需说明的是,对于不分片的报文可直接得到其五元组信息,因此,这里的报文既包括了不分片的报文,又包括了分片的报文。步骤305:判断是否查找到报文所对应的流表表项,如果查找到,执行步骤309;否则,执行步骤306。当查找到流表表项时,则说明与该报文属于同一个流的其他报文已经被处理过,此时,即可将该报文发送到流表表项中的处理器标识所对应的处理器中,由该处理器来处理该报文,同时,还需将流表表项中用该处理器处理该报文的计时时间清零,使其重新开始计时。步骤306:选择处理器中的一个处理器创建流表表项,并更新该处理器的负载信息后,执行步骤309。当没有查找到对应的流表表项时,则说明该报文为一条流中的第一个报文或者之前没有与该流相关流中的报文被处理过,此时,需要创建该报文对应的流表表项,即根据报文的五元组信息创建流表表项,同时,还需选择其中的一个处理器,并将所述选择的处理器标识也存储到流表表项中;进一步地,还可设定该处理器处理该报文的最大使用周期。需要说明的是,在本步骤中,为了使得处理器的负载均衡,在选择处理器时,可以选择负载能力最大的处理器,在选择完后还需更新该处理器的负载信息。还需说明的是,在本步骤中,为了能够准确及时地获取到处理器的负载能力信息,预处理器需要定期地对处理器的负载能力和是否正常运行等处理器的信息进行监控。至此,即完成了根据报文的五元组信息确定处理所述报文的处理器的过程,下面详细说明与该过程无先后顺序之分的创建所述报文所属的流相关流的流表表项的过程,即步骤307-308。步骤307:对报文进行解析,根据解析结果确定所述报文所属的流是否存在相关流,如果是,执行步骤308;否则,执行步骤309。在本步骤中,假设至少存在流1和流2两条流,则确定所述报文所属的流存在相关流的情况可以有以下几种:1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前,解析出接收到的流2的报文中存在流1的五元组信息,此时,即可确定流2存在相关的流,即为流1。比如:解析出FTP控制连接的PORT报文中存在数据连接的五元组信息,则数据连接必然控制连接的相关流。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,此时,如果预先设定SIP地址相同的流为相关流,当解析出流2的第一个报文的SIP与流1的相同时,即可认为流2存在相关流、即为流1。这种情况可以应用于黑客攻击服务器中,比如流1来自于某个用户,当发现该用户是黑客恶意攻击时,那么由于流1的SIP即为该用户的IP地址,为了防止黑客的恶意攻击,需要对该用户发出的所有数据都视为无效数据进行处理,即将SIP相同的所有流都视为该用户的数据流,即可认为SIP相同的所有流都是相关的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,即可确定流2存在相关的流,为流1。以上三种情况仅为举例说明,实际中还可以根据业务情况确定,总之可以从某个流的报文中解析出该报文所属的流是否存在相关流即可,以不影响本发明实施例的实现为准。步骤308:根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识后,执行步骤309。在本步骤中,创建流表表项可以为重新为流创建一个新的流表表项,也可以为修改流之前的流表表项。比如:当相关的流中的报文之前没有任何一个被处理过时,需要创建相关的流的流表表项;而修改流表表项的情况则为:假设有两个流,分别为流1和流2,流1采用处理器1进行处理,流2采用处理器2进行处理,在处理流1的时候接收到流2的报文,而对流2的报文进行解析发现流2中存在相关的流1,此时,为了使得相关的两个流能够使用同一个处理器进行处理,则需修改流1的流表表项,即将流1也采用处理器2来进行处理;或者修改流2的流表表项,即将流2也采用处理器1来进行处理。需要说明的是,由于五元组信息可以为报文所属流的五元组信息,也可以为相关流的五元组信息,因此,创建流表表项对应了不同的情况,可以有以下几种:1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前,解析出接收到的流2的报文中存在流1的五元组信息,则可根据相关流的五元组信息为相关流创建流表表项,且流表表项中的处理器标识与流2的流表表项的处理器标识是相同的。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,且流2的第一个报文的SIP与流1的相同时,则需要根据流2的五元组信息为流2创建流表表项,且流表表项中的处理器标识与流1的流表表项的处理器标识是相同的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,此时可有两种情况:当根据流2的五元组信息创建流表表项时,需要对应地修改流2的流表表项中的处理器标识,使其与流1的流表表项的处理器标识相同;当根据流1的五元组信息创建流表表项时,需要对应地修改流1的流表表项中的处理器标识,使其与流2的流表表项的处理器标识相同。还需说明的是,在本实施例中,所述报文的流表表项中的处理器标识与所述报文所属的流相关流的流表表项中的处理器标识也可以是不相同的,比如,当在创建流表表项时,如果该处理器的负载能力已经达到极限,也可通过其它的处理器来处理,在实际中,以不影响本发明实施例的实现为准。步骤309:将报文分配到报文的流表表项中的处理器标识所对应的处理器中,结束该报文的处理过程。需要说明的是,该步骤是在执行完步骤304-306和步骤307-308之后进行的。至此,即完成了本发明报文处理方法实施例的整个工作流程。需要说明的是,图3所示的工作流程是以对某一个报文的处理为例来进行说明的,后续接收到的报文都采用了同样的处理操作,这里不再对其进行赘述。总之,本发明所采用的报文处理装置,是通过将预处理器和多个并行的低功耗处理器组合起来应用到服务器中,预处理器将来自外部的报文预先进行分流,分别分配给各个低功耗处理器,并且将同一个流的报文分配给同一个处理器进行处理。这样,一方面,多个低功耗处理器能够并行处理预处理器分配给自身的报文,从整体上可以达到比较高的性能;另一方面,由于应用到服务器中并行的处理器是低功耗的处理器,从而在整体上可以降低服务器的功耗。同时,本发明方案通过预处理器的预先分流使得属于同一个流的报文都能够由一个处理器来处理,而不会出现由不同的处理器来处理,则同一个流的报文还需要在处理器间转发的问题,也就简化了处理器的处理流程。进一步地,本发明方案通过对各个处理器的状态信息进行监控,从而能够在各个处理器之间进行协调运行,减少相互之间的干扰,使得系统运行更加稳定。最后,本发明方案还能够使得与报文相关的流也可通过同一个处理器来进行处理,从而使得相关的流也无需在处理器间进行转发,更加简化了处理器的处理流程。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。